#ifndef __STARDRIVERPARAMS_H__
#define __STARDRIVERPARAMS_H__

typedef enum DRV_ENUM
{
	DRV_OPENGL		= 0,
	DRV_NULLDRIVER	= 1,
	DRV_USEDEFAULT	= 2,
} DRV_ENUM;

typedef enum DeviceTypeENUM
{
	DT_NULL		= 0,
	DT_WIN32,
} DeviceTypeENUM;

typedef enum LOGS_TYPE
{
	LOG_NONE			=	0x00,
	LOG_DEBUG			=	0x01,
	LOG_INFO			=	0x01<<1,
	LOG_RELEASE			=	0x01<<2,
	LOG_DEBUG_ERROR		=	0x01<<3,
	LOG_RELEASE_ERROR	=	0x01<<4,
	LOG_ALL				=	0xffffffff,
} LOGS_TYPE;

typedef struct StartDriverParams
{
	StartDriverParams()
	{
		// Fill the default values.
		LenX = 640;
		LenY = 480;
		FullScreen = false;
		drvType = DRV_OPENGL;
		TitleDefault = "PLE";
		LogsType = LOG_ALL;
		//Window = NULL;
		VSync = false;
		UseVertexArray = false;
	}

	u32 		LenX;
	u32 		LenY;
	bool 		FullScreen;
	DRV_ENUM 	drvType;
	stringc		TitleDefault;
	LOGS_TYPE	LogsType;
	void		*Window;
	bool		VSync;
	bool		UseVertexArray;
} StartDriverParams;

typedef enum SceneTypes
{
	SCN_EMPTY	= 0,
	SCN_QUAD,
	SCN_TRIANGLE,
	SCN_FINISH	= 0xffffffff,
} SceneTypes;

#define DEF_POS		vector3dvpos(0.0,0.0,0.0)
#define DEF_SCAL	vector3dvpos(1.0,1.0,1.0)
#define DEF_ROT		vector3dvpos(0.0,0.0,0.0)
#define DEF_PARENT	NULL
#define DEF_MAT		NULL
#define DEF_ID		-1
#define DEF_NAME	"DefaultName"

#define ISceneNodeBasicParamsDeclaration	vector3dvpos Pos=DEF_POS,vector3dvpos scal=DEF_SCAL, \
											vector3dvpos rot=DEF_ROT,stringc name=DEF_NAME, \
											ISceneNode *parent=DEF_PARENT,s32 ID=DEF_ID
#define ISceneNodeReceiveParams				vector3dvpos Pos,vector3dvpos scal,vector3dvpos rot,stringc name, \
											ISceneNode *parent,s32 ID
#define ISceneNodeBasicParams				Pos,scal,rot,name,parent,ID

#endif
